<?php
/**
 * Zead
 *
 * LICENSE	
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://www.opensource.org/licenses/bsd-license.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to eu@marcelomx.com so we can send you a copy immediately.
 *
 * @category   Zead
 * @author     Marcelo Rodrigues Gonzaga <eu@marcelomx.com>
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga
 * @link       http://code.google.com/p/zead 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License
 *
 **/


/** @see Zead_Html_Filter_Abstract **/
require_once 'Zead/Html/Filter/Abstract.php';

/** @see Zead_Quiz **/
require_once 'Zead/Quiz.php';

/**
 * @category   Zead
 * @package    Zead_Html
 * @subpackage Zead_Html_Filter
 * @copyright  Copyright (c) 2008 Marcelo Rodrigues Gonzaga 
 * @license    http://www.opensource.org/licenses/bsd-license.php     New BSD License  
 */
class Zead_Html_Filter_Quiz extends Zead_Html_Filter_Abstract
{
	/**
	 * Aplica o filtro que tem a função de procurar elementos com o id siteName ou outro
	 * passado como argumento que será o título do site.
	 * @param string $src
	 * @param string $selector
	 */
	public function filter($quizzesList = array(), $selector = 'code.quiz') 
	{
		if (count($quizzesList) == 0)
			return;
			
		$this->_quizzesList = $quizzesList;
	
		foreach ($this->html->documentElement->select($selector) as $code) {
			$quiz = $this->getQuiz($code->getAttribute('identifier'));
			
			if (!$quiz) continue;
			
			$block = $this->html->createElement('div');
			$code->parentNode->replaceChild($block, $code);
			
			// Creating quiz
			$oQuiz = new Zead_Quiz($quiz['title']);
			
			foreach ($quiz['questions'] as $question) {
				$oQuestion = $oQuiz->addQuestion($question['type'], $question['title'], 'Hã');
				
				foreach ($question['responses'] as $response) {
					$oQuestion->addResponse($response['value'], $response['label']);
				}
			}
			
			$block->update($oQuiz->render());
		}
	}
	
	public function getQuiz($identifier)
	{
		foreach ($this->_quizzesList as $quiz) {
			if ($quiz['attrs']['identifier'] == $identifier) {
				return $quiz;
			}
		}
		return false;
	}
}

